<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>this指向问题</title>
    <!-- 
        在 ES6 中类没有变量提升，所以必须先定义类，才能通过类实例化对象。
        类里面的共有属性和方法一定要加this使用。
        类里面的this指向问题。
        constructor 里面的this指向实例对象, 方法里面的this 指向这个方法的调用者。

     -->
</head>
<body>
    <button>点击</button>
</body>
<script>
    var that
    var _that
    class Father {
        constructor(uname,age) {
            // constructor 里面的 this 指向的是 创建实例的对象
            that = this
            console.log(this);
            this.uname = uname
            this.age = age

            this.btn = document.querySelector('button');
            this.btn.onclick = this.sing
        }
        sing() {
            // 这个里面的this指向的是btn这个按钮  btn调用了这个函数
            console.log(this);
            // that里面指向的是constructor里面的this
            console.log(that.uname);
        }
        dance() {
            // 里面的this指向的是实例对象ldh 因为ldh调用了这个函数
            _that = this
            console.log(this);
        }
        
    }
    var smx = new Father('smx',20)
    console.log(that===smx);
    smx.dance()
    console.log(_that===smx);
     // 1. 在 ES6 中类没有变量提升，所以必须先定义类，才能通过类实例化对象
 
        // 2. 类里面的共有的属性和方法一定要加this使用.


    
</script>
</html>